'use strict';

const Controller = require('egg').Controller;

class UserController extends Controller {
	/**
	 * 分页查询用户数据  返回 { page , list}对象
	 */
	async list() {
		const { ctx } = this;
		// 获取用户的分页信息
		const { page } = ctx.request.body;
		if (!page) {
			page = {
				currentPage: 1,
				pageNumber: 10
			};
		}
		// 调用服务查询数据
		const result = await this.service.admin.user.list(page);
		this.ctx.success(result);
	}

	/**
	 * 根据id获取用户的基本信息
	 */
	async getUserBasicInfoById() {
		const { ctx } = this;
		// 在URL上获取动态路由数据
		const { id } = ctx.params;
		if (!id) {
			// 没有token则表示未登录
			ctx.failure(null, '用户id获取不到' , 100001);
			return;
		}
		// 调用服务查询数据
		const user = await this.service.admin.user.info(id);
		// 未获取到用户的基本数据
		if (!user) {
			// 没有token则表示未登录
			ctx.failure(null, '未查询到此用户', 100002);
			return;
		}
		this.ctx.success(user);
	}

	/**
	 * 根据id删除此用户
	 */
	async deleteUserInfoById() {
		const { ctx } = this;
		// 在URL上获取动态路由数据
		const { id } = ctx.params;
		if (!id) {
			// 没有token则表示未登录
			ctx.failure(null, '用户id获取不到' , 100001);
			return;
		}
		// 调用服务查询数据
		const user = await this.service.admin.user.deleteUserById(id);
		// 未获取到用户的基本数据
		this.ctx.success(user);
	}

	/**
	 * 根据id获取用户的基本信息
	 */
	async updateUserById() {
		const { ctx } = this;
		// 获取用户的分页信息
		const { id } = ctx.request.body;
		if (!id) {
			// 没有id不能修改用户的基本信息
			ctx.failure(null, '用户id获取不到' , 100001);
			return;
		}
		// 调用服务查询数据
		const user = await this.service.admin.user.updateUserInfoById(ctx.request.body);
		this.ctx.success(user);
	}
}

module.exports = UserController;
